Conversation
| (defn generate-pokemon-urls | ||
| ([total] (generate-pokemon-urls total 20)) | ||
| ([total batch-size] | ||
| (loop [offset 0 |
There was a problem hiding this comment.
я бы предложил тут сделать более функционально на range + map
|
|
||
| (let [result (<!! (a/into [] out>))] | ||
| (close! in>) | ||
| (close! mdl>) |
There was a problem hiding this comment.
пайплайны сами закроют выходные каналы при закрытии (и исчерпании) входных, так что тут достаточно закрыть только in>
There was a problem hiding this comment.
обращаю внимание, что onto-chan! сам закроет входной канал при исчерпании коллекции, так что тут дополнительно ничего делать не нужно
| (defn pokemons-types [count lang] | ||
| (let [type-names-lang (translated-types lang) | ||
| in> (chan 20) | ||
| mdl> (chan count) |
There was a problem hiding this comment.
не обязательно буферы каналов делать равными количеству запрашиваемых сущностей, в теории оно ничем не ограничено
| out> (chan count) | ||
| async-fn (fn [url out*] | ||
| (go | ||
| (let [arr (get-parse-xform url :results)] |
There was a problem hiding this comment.
блокирующие вызовы запросов быстро займут все ресурсы core async и несмотря на то, что это все еще будет работать быстрее, чем при синхронной обработке, тут есть что улучшить.
Код рабочий, но тесты не проходит. Надеюсь эта недоработка не повлияет на принятие решения.
Может быть не совсем верно. Есть что улучшить.
Например можно получение типов покемонов и самих покемонов параллельно сделать.